package cn.cqsztech.candy;

/**
 * 糖果问题
 * ccmars
 * 2022/3/8
 **/
public class CandyQuestion {
    /**
     * arg中的数据的值表示在该位置的小孩的权，权比左右小孩大的得到的蜡烛比他们多
     * 也就是意味着如果[0,1,1]那么至少要分配的蜡烛数据为1,2,1
     *
     * @param arg
     */
    public static int candy(int[] arg) {

        if (null == arg || arg.length < 2) {
            return 0;
        }
        int[] result = new int[arg.length];
        //处理比左边孩子大的情况
        for (int i = 0; i < arg.length; i++) {
            if (i == 0) {
                result[i] = 1;
                continue;
            }
            if (arg[i] > arg[i - 1]) {
                result[i] = result[i - 1] + 1;
            } else {
                result[i] = 1;
            }
        }
        for (int i = arg.length - 1; i >= 0; i--) {
            if (i == arg.length - 1) {
                continue;
            }
            if (arg[i] > arg[i + 1] && result[i] <= result[i + 1]) {
                result[i] = result[i + 1] + 1;
            }
        }
        int candy = 0;
        for (int i = 0; i < result.length; i++) {
            candy += result[i];
        }
        return candy;

    }

}
